package com.liang.mapper;


import com.liang.pojo.Armyx;
import com.liang.pojo.Dutyzx;
import com.liang.pojo.dto.ArmyxTreex;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *@作者:lsk
 *DAO接口
 *@Date:2023/10/16
*/
public interface ArmyxDAO<T,P> extends MyBaseMapperLSK<T,P>{


	/**
	 * 查询军队的职务
	 */
	public List<T> ArmyAndAllDutyxz(@Param("query") P p);

	/**
	 * 查询军队的职务,并且查看职务是否有人任职
	 */
	public List<T> 	selectArmyDutyUserUser(@Param("query") P p);


	/**
	根据Army_id查询
	*/
	public Armyx selectByArmy_id(@Param("army_id") Long army_id);

	/**
	根据Army_id更新
	*/
	public Integer updateByArmy_id(@Param("bean") T t);

	/**
	根据Army_id删除
	*/
	public Integer deleteByArmy_id(@Param("army_id") Long army_id);


	/**
	 * 查询军队和他的一个子军队
	 */
	public List<ArmyxTreex> selectListAllArmy(@Param("query") P p);

	/**
	 *查询军队是否有子军队
	 */
	public List<Armyx> selectListAllArmyChild(Map map);



	/**
	 insertlsk:(插入)
	*/
	public Integer insertlsk(@Param("bean") T t);


	/**
	 insertOrUpdatelsk(插入或更新(根据主键或唯一索引更新，主键和唯一索引不会改变))
	*/
	public Integer insertOrUpdatelsk(@Param("bean") T t);


	/**
	 insertBathlsk:(批量插入)
	*/
	public Integer insertBatchlsk(@Param("list") List<T> list);


	/**
	 insertOrUpdateBatchlsk:(批量插入或更新)
	*/
	public Integer insertOrUpdateBatchlsk(@Param("list") List<T> list);


	/**
	 selectListlsk:(根据参数查询集合)
	*/
	public List<T> selectListlsk(@Param("query") P p);


	/**
	 selectCount:(根据集合查询数量)
	*/
	public Long selectCountlsk(@Param("query") P p);

	/**
	 * 查询师下面的所有人
	 */

	public  List<Long> getAllUser();

	/**
	 * 根据userid获取其ArmyFatherId
	 * @param user_id
	 * @return
	 */
    Long getArmyFatherId(@Param("user_id") Long user_id);

    List<Long> getArmyIds(@Param("armyId") Long armyId);
}